// 进行axios的二次封装
import axios from 'axios';
import { ElMessage } from 'element-plus';
// 第一步：利用axios的create方法创建axios的实例，配置基础路由和超时时间
const https = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_URL, // 基础路径会携带/dev-api
  timeout: 5000 // 超时时间
})
// 第二步：要给https实例添加拦截器
https.interceptors.request.use((config) => {
  //config 配置对象， headers属性请求头 经常携带公共参数给后端
  // 返回配置对象
  return config
});
// 第三步：要给https实例添加相应拦截器
https.interceptors.response.use(
  (response) => {
    //config 配置对象， headers属性请求头 经常携带公共参数给后端
    // 返回配置对象
    return response.data
  },
  (error) => {
    // 失败回调
    let msg = '';
    let status = error.response.status;
    switch (status) {
      case 401: 
        msg = 'token过期';
        break;
      case 403: 
        msg = '无权访问';
        break;
      case 404: 
        msg = '路由地址错误';
        break;
      case 500: 
        msg = '服务器请求异常';
        break;
      default: 
        msg = '网络出现问题';
        break;
    }
    ElMessage({
      type:'error',
      message: msg
    })
    return Promise.reject(error)
  }
);

// 对外暴露
export default https;